package com.example.weatherforecast.city_manager;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.example.weatherforecast.R;
import com.example.weatherforecast.database.MyDataBaseManager;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class DeleteCityActivity extends AppCompatActivity implements View.OnClickListener {

    Context context;
    //控件
    ImageView errorIv, rightIv; //取消和确定
    ListView deleteLv;          //删除列表

    // 列表的数据源和备份
    List<String> list, back;

    //保存要删除的列表，确定后做统一删除
    List<String> deleteList;

    // 适配器
    DeleteCityAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_delete_city);

        init();
    }

    /**
     * 初始化控件
     */
    private void init() {
        // 初始化控件
        errorIv = findViewById(R.id.deleteIvError);
        rightIv = findViewById(R.id.deleteIvRight);
        deleteLv = findViewById(R.id.deleteLv);


        // 设置监听器
        errorIv.setOnClickListener(this);
        rightIv.setOnClickListener(this);

        // 读取数据库中的城市
        list = MyDataBaseManager.queryAllCityName();
        // 备份
        back = MyDataBaseManager.queryAllCityName();
        // 逆序，改善用户使用感受
        Collections.reverse(list);
        Collections.reverse(back);

        deleteList = new ArrayList<>();

        // 设置ListView适配器
        adapter = new DeleteCityAdapter(this, list, deleteList);
        deleteLv.setAdapter(adapter);

        // 上下文
        context = this;
    }

//    /**
//     * 更新列表
//     */
//    @Override
//    protected void onResume() {
//        super.onResume();
//        // 获取数据库中的城市名
//        List<String> list1 = MyDataBaseManager.queryAllCityName();
//        list.addAll(list1);
//        // 提示适配器更新数据
//        adapter.notifyDataSetChanged();
//    }

    /**
     * 点击方法
     *
     * @param v
     */
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.deleteIvError:    //取消刚刚的删除
                // 如果不做修改直接返回上一界面
                if (deleteList.isEmpty())
                    finish();
                else {
                    AlertDialog.Builder builder = new AlertDialog.Builder(this);
                    builder.setTitle("提示信息").setMessage("您是否要取消更改？")
                            .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
//                                    //确定后关闭当前的activity
//                                    finish();
                                    //清空删除列表
                                    deleteList.clear();
                                    //利用备份还原列表
                                    list.clear();
                                    list.addAll(back);
                                    adapter.notifyDataSetChanged();
                                }
                            });
                    builder.setNegativeButton("取消", null);//取消不做任何操作
                    builder.create().show();
                }
                break;
            case R.id.deleteIvRight:
                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setTitle("提示信息").setMessage("您确定保存更改么？")
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) { //在数据库中删除数据
                                for (int i = 0; i < deleteList.size(); i++) {
                                    String city = deleteList.get(i);
                                    //调用删除城市的函数
                                    MyDataBaseManager.deleteInfoByCity(city);
                                    Toast.makeText(context, "删除成功", Toast.LENGTH_SHORT).show();
                                }
                                //删除成功返回上一级页面
                                finish();
                            }
                        });
                builder.setNegativeButton("取消", null);
                builder.create().show();
                break;
        }
    }
}
